package services;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import entities.RezyserEntity;

/**
 * Session Bean implementation class Rezyser
 */
@Stateless
@LocalBean
public class RezyserService implements RezyserRemote {
	@PersistenceContext(name = "WebFilmPU") private EntityManager em;
    
    public RezyserService() {
        
    }

    public void addRezyser(String imie, String nazwisko)
    {
		Integer id = getMaxId()+1;
    	RezyserEntity r = new RezyserEntity(id,imie,nazwisko);
    	em.persist(r);
    }
    
	public void addRezyser(RezyserEntity rezyser)
    {
		em.persist(rezyser);
    }
    
	public void updateRezyser(Integer id, String imie, String nazwisko)
	{
		RezyserEntity r = getRezyser(id);
		r.setImie(imie);
		r.setNazwisko(nazwisko);
	}
	
	@SuppressWarnings("unchecked")
    public List<RezyserEntity> getAll()
    {
		List<RezyserEntity> lista = em.createNamedQuery("RezyserEntity.findAll").getResultList();
    	
		for(RezyserEntity r : lista)
		{
			r.getFilms().size();
		}
		
		return lista;
    }
	
	public RezyserEntity getRezyser(Integer id)
	{
		RezyserEntity r = em.find(RezyserEntity.class, id);
		return r;
	}
	
	public void removeRezyser(Integer id)
	{
		RezyserEntity r = getRezyser(id);
		if(r!=null)
		{
			em.remove(r);
		}
	}
	
	private Integer getMaxId() {
		 
		Query maxIdQuery = em.createQuery("SELECT max(r.id) FROM RezyserEntity r");
 
		Integer maxId = 1;
 
		if( (maxIdQuery.getResultList() != null) && (maxIdQuery.getResultList().size() > 0) ) {
 
			maxId = (Integer)maxIdQuery.getResultList().get(0);
 
		}
 
		return maxId;
	}

	public RezyserEntity getRezyser(String nazwisko) {
		Query query = em.createNamedQuery("RezyserEntity.findByNazwisko");
		query.setParameter("nazwisko", nazwisko);
		return (RezyserEntity)query.getSingleResult();
	}
}
